<?php
include_once('./header.php');

// on teste si le visiteur a soumis le formulaire de connexion  
if (isset($_POST['connexion']) AND $_POST['connexion'] == 'Connexion') {
    if (!empty($_POST['pseudo']) AND !empty($_POST['mot_de_passe'])) {
		
		// protection contre brute force
		
		if(!file_exists('protectbrutefoce/'.$_POST['pseudo'].'.tmp')) {  // Si le fichier n'existe pas
			$existence_fichier = 0;
			$tentatives = 0;
		}
		else {  // Si le fichier existe
			$fichier_protectbrutefoce = fopen('protectbrutefoce/'.$_POST['pseudo'].'.tmp', 'r+'); // On ouvre le fichier en lecture seule
			$contenu_fichier = fgets($fichier_protectbrutefoce); //on lit la première ligne du fichier
			$infos_tentatives = explode(';', $contenu_fichier); // On découpe le contenu du fichier pour récupérer les informations
			
			if($infos_tentatives[0] == date('d-m-Y')) { // Si la date du fichier est celle d'aujourd'hui, on récupère le nombre de tentatives
				$existence_fichier = 1;
				$tentatives = $infos_tentatives[1];
			}
			else { // Si la date du fichier est dépassée, on met le nombre de tentatives à 0 et $existence_fichier à 2
				$existence_fichier = 2;
				$tentatives = 0; // On met la variable $tentatives à 0
			}
		}
		
		if($tentatives < 3) {
		
			$mot_de_passe_hache = sha1($_POST['mot_de_passe']); // Hachage du mot de passe

			// Vérification des identifiants
			$req = $bdd->prepare('SELECT * FROM planetside2_membre LEFT JOIN planetside2_banni
			ON planetside2_membre.id = planetside2_banni.id_membre
			WHERE pseudo = :pseudo AND mot_de_passe = :mot_de_passe;');
			$req->execute(array(
				'pseudo' => $_POST['pseudo'],
				'mot_de_passe' => $mot_de_passe_hache
				));
			$resultat = $req->fetch();

			if (!$resultat) {
				if($existence_fichier == 0) { // Si le fichier n'existe pas encore, on le créer
					$creation_fichier = fopen('protectbrutefoce/' . $_POST['pseudo'] . '.tmp', 'a+'); // On créer le fichier puis on l'ouvre
					fputs($creation_fichier, date('d-m-Y') . ';1'); // On écrit à l'intérieur la date du jour et on met le nombre de tentatives à 1
					fclose($creation_fichier); // On referme
				}
				elseif($existence_fichier == 2) { // Si la date n'est plus a jour
					fseek($fichier_protectbrutefoce, 0); // On remet le curseur au début du fichier
					fputs($fichier_protectbrutefoce, date('d-m-Y') . ';1'); // On met à jour le contenu du fichier (date du jour;1 tentatives)
					fclose($fichier_protectbrutefoce);
				}
				else {
					fseek($fichier_protectbrutefoce, 11); // On place le curseur juste devant le nombre de tentatives
					fputs($fichier_protectbrutefoce, $tentatives + 1); // On ajoute 1 au nombre de tentatives
					fclose($fichier_protectbrutefoce);
				}
				$erreur = 'Mauvais identifiant ou mot de passe !';
			}
			else {
				if($resultat['verification'] == 1) {
					switch ($resultat['niveau']) {
						case 'définitif':
							$message = 'Vous êtes banni définitivement!';
						break;
						case 'temporaire':
							if (date('Y-m-d H:i:s') < $resultat['fin_ban']) {
								$message = 'Vous avez été banni jusqu\'au ' . Date_fr($resultat['fin_ban']) . '<br />Pour la raison suivante :<br>
								- ' . $resultat['raison_ban'];
							}
							else {
								$req = $bdd->prepare('UPDATE planetside2_membre SET derniere_connexion = :date, ip = :ip WHERE pseudo = :pseudo');
								$req->execute(array(
									'date' => date('Y-m-d H:i:s'),
									'ip' => $_SERVER['REMOTE_ADDR'],
									'pseudo' => $_POST['pseudo']
									));
								
								$req = $bdd->prepare('UPDATE planetside2_banni SET niveau = "débanni" WHERE id_membre = :id_membre AND niveau = "temporaire" ');
								$req->execute(array(
									'id_membre' => $resultat['id_membre']
									));
					
								$_SESSION['pseudo'] = $_POST['pseudo'];
								if(file_exists('protectbrutefoce/' . $_POST['pseudo'] . '.tmp')) { // Si le fichier existe, on l'efface
									fclose($fichier_protectbrutefoce);
									unlink('./protectbrutefoce/' . $_POST['pseudo'] . '.tmp');
								}
								$message = 'Vous venez d\'êtes ré-autoriser, veuillez respecter <a href="./guide.php" target="_blank">les règles</a> à l\'avenir!<br />
								Vous êtes connecté.';
							}
						break;
						default:
							$req = $bdd->prepare('UPDATE planetside2_membre SET derniere_connexion = :date, ip = :ip WHERE pseudo = :pseudo');
							$req->execute(array(
								'date' => date('Y-m-d H:i:s'),
								'ip' => $_SERVER['REMOTE_ADDR'],
								'pseudo' => $_POST['pseudo']
								));
				
							$_SESSION['pseudo'] = $_POST['pseudo'];
							if(file_exists('protectbrutefoce/' . $_POST['pseudo'] . '.tmp')) { // Si le fichier existe, on l'efface
								fclose($fichier_protectbrutefoce);
								unlink('./protectbrutefoce/' . $_POST['pseudo'] . '.tmp');
							}
							$message = 'Vous êtes connecté<br> <a href="' . $_POST['redirection'] . '">Continuer</a>';
					}
				}
				else {
					$message = 'Veuillez validez votre compte.<br />
					<a href="./#confirmation.php">Confirmer mon compte</a>';
				}
			}
			$req->closeCursor();
		}
		else { // S'il y a déjà eu 3 tentatives dans la journée, on affiche un message d'erreur
			$message = 'Trop de tentatives d\'authentification aujourd\'hui';
		}
	}
    else { 
       $erreur = 'Au moins un des champs est vide.'; 
    }
}
?>
				<div id="corps-grand">
					<div id="tete-corps-grand"></div>
					<div id="milieu-corps-grand">
						<h2>Connexion</h2>
						<?php 
						if (isset($message)) {
							echo $message ;
						}
						elseif(isset($_SESSION['pseudo'])) {
							echo 'Vous êtes déjà conneté <strong>' . $_SESSION['pseudo'] . '</strong>';
						}
						else {
							if (isset($erreur)){ echo '<span style="color:red;">' . $erreur . '</span><br />'; } 
						?>
							<form action="./connexion.php" method="post">
								<input type="hidden" name="redirection" value="<?php 
									if (!empty($_POST['redirection'])) {
										echo $_POST['redirection']; 
									}
									elseif (!empty($_SERVER['HTTP_REFERER'])) {
										echo $_SERVER['HTTP_REFERER'];
									}
									else {
										echo './index.php'; 
									} 
								?>">
							
								<label for="pseudo">Login :</label><br />
								<input type="text" name="pseudo" maxlength="30" value="<?php if (isset($_POST['pseudo'])) echo $_POST['pseudo']; ?>"><br />
								
								<label for="mot_de_passe">Mot de passe :</label><br />
								<input type="password" name="mot_de_passe" maxlength="20"><br />
								<br />
								<input type="submit" name="connexion" value="Connexion">
							</form>
							<a href="#oublie_mdp.php">Mot de passe oublié?</a>
						<?php
						}
						?>
					</div>
					<div id="pied-corps-grand"></div>
				</div>
				<br class="clear" /> 
<?php
include_once('./footer.php');
?>